import { metalDoor } from './content/door';
import { concreteFloor } from './content/ground';
import { brokenThickGlass, lifeMonitor, lockedElevator, medicalMachine, metalConstruct, sleepCapsule } from './content/lab';
import { upstairs } from './content/stairs';
import { metalWall } from './content/wall';
import { flashBlindTrap } from './content/traps';
import { generateMap } from './mapbuilder';
import { withCustomGlyph } from './builder';

const template = `
###############
######   ######
####  ###  ####
### ### ### ###
## ##     ## ##
## #   $   ## #
# ##  /-0  ##+#####
# #  ^|&|^  #     #
# ##  0-/  ##+### ###
## #   @   ## #     #
## ## 1 1 ## ##+#=#=#
### ###+### ###<#
####       ######
#############
`;

const template3= `
###### ###########
##### ###   ######
#### ##  ###  ####
### ## ### ### ###
### # ##     ## ##
## ## #   $   ## #
## # ##  /-0  ## #
## # #  ^|&|^  # #
## # ##  0-/  ## #
## ## #       ## #
### # ## 1 1 ## ##
### ## ###+### ###
#### ##    ## ####
##### ###### #####
######      ######
##################
`;

const template4 = `
########################################
########################################
########################################
########################################
#######@                   #############
####### ################################
####### #                  #############
####### # ################ #############
####### # #              # #############
####### # # ############ # #############
####### # # #          # # #############
####### # # # ######## # # #############
####### # # # #      # # # #############
####### # # # # #### # # # #############
####### # # # # #  # # # # #############
####### # # # # ## # # # # #############
####### # # # #    # # # # #############
####### # # # ###### # # # #############
####### # # #        # # # #############
####### # # ########## # # #############
####### # #            # # #############
####### # ############## # #############
####### #                # #############
####### ################## #############
#######                    #############
########################################
########################################
########################################
########################################
########################################
########################################
########################################
`;

export const prepareMap = (world) => {
  generateMap(world, template, concreteFloor, {
    '#': metalWall,
    '&': sleepCapsule,
    '+': metalDoor,
    '1': metalConstruct,
    '<': upstairs,
    '=': lockedElevator,
    '/': withCustomGlyph(brokenThickGlass, '/'),
    '|': withCustomGlyph(brokenThickGlass, '|'),
    '0': withCustomGlyph(brokenThickGlass, '\\'),
    '-': withCustomGlyph(brokenThickGlass, '-'),
    '$': lifeMonitor,
    '^': medicalMachine,
    '@': flashBlindTrap,
  });
};
